home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2007 September / PCWSEP07.iso / Software / Full / OrgPlus 7 SBE / ORGPL.CAB / chartFunc.js < prev    next >
Encoding:
Text File  |  2007-05-15  |  21.2 KB  |  865 lines

  1. /**********************************************************
  2. *                                                         *
  3. * (C) Copyright 2002 - 2004,  Human Concepts (tm)         *
  4. *                                                         *
  5. ***********************************************************
  6. * File name: chartFunc.js                                 *
  7. * Author: Andrey Ponomarev                                *
  8. **********************************************************/
  9.  
  10.   window.onresize = onChartPageResized
  11.   window.onscroll = onChartPageScrolled
  12.  
  13.   var strActiveBoxId = "";
  14.   var strActiveSubBoxId = "";
  15.   var objBoxMouseOver;
  16.   var timerId = -1;
  17.   var HotspotProfilesTimerId = -1;
  18.   var nTimerCount = 0;
  19.  
  20.   function onBoxMouseMove()
  21.   {
  22.     nTimerCount = 0;
  23.     var objGroup = GetGroupForObject(event.srcElement)
  24.     if ( typeof(objBoxMouseOver) == 'undefined' || 
  25.          objBoxMouseOver.id != objGroup.id ||
  26.          strActiveBoxId != objBoxMouseOver.id && timerId <= 0 )
  27.     {
  28.       objBoxMouseOver = objGroup;
  29.  
  30.       if (timerId > 0)
  31.         window.clearInterval(timerId);
  32.  
  33.       timerId = window.setInterval("onTimerFunc()", 2000);
  34.     }
  35.   }
  36.  
  37.   function onBoxMouseOut()
  38.   {
  39.     if (timerId != -1)
  40.     {
  41.       var objGroup = GetGroupForObject(event.fromElement)
  42.       var objTo    = GetGroupForObject(event.toElement)
  43.       if ( typeof(objTo) == 'undefined' || objTo == null || objGroup != objTo)
  44.       {
  45.         window.clearInterval(timerId)
  46.         timerId = -1
  47.       }
  48.     }
  49.   }
  50.  
  51.   function onTimerFunc()
  52.   {
  53.     nTimerCount++
  54.     if (nTimerCount == 4)
  55.     {
  56.       window.clearInterval(timerId)
  57.       timerId = -1
  58.       onClickGroupObj(objBoxMouseOver)
  59.     }
  60.   }
  61.  
  62.   function onClickGroup()
  63.   {
  64.     onClickGroupObj(event.srcElement);
  65.   }
  66.   
  67.   function onClickSubBox()
  68.   {
  69.     onClickSubBoxObj( event.srcElement );
  70.   };
  71.  
  72.   function onClickGroupObj(obj)
  73.   {
  74.     if (typeof(obj) != "object")
  75.       return;
  76.     
  77.     var objGroup = GetGroupForObject(obj);
  78.     onSelectChartBox(objGroup);
  79.   }
  80.   
  81.   function onClickSubBoxObj( obj )
  82.   {
  83.     if (typeof(obj) != "object")
  84.       return;
  85.       
  86.     var oParentGroup = GetGroupForObject( obj );
  87.     if( strActiveBoxId != oParentGroup.id )
  88.     {
  89.       onSelectChartBox( oParentGroup );
  90.       return;
  91.     }
  92.     
  93.     var objGroup = GetBoxForObject(obj);
  94.     onSelectSubBox(objGroup);
  95.   };
  96.  
  97.   function GetGroupForObject(obj)
  98.   {
  99.     var objGroup = obj;
  100.     if ( obj != null && typeof(obj) != 'undefined' )
  101.     {
  102.       if (objGroup.nodeName == "textbox")
  103.         objGroup = objGroup.parentElement;
  104.  
  105.       if (objGroup.nodeName != "group")
  106.       {
  107.         var parent = objGroup.parentElement;
  108.         if(parent.nodeName == "A") //drill
  109.            return parent.parentElement;
  110.         return parent;
  111.       }
  112.     }
  113.     return objGroup;
  114.   }
  115.   
  116.   function GetBoxForObject( obj )
  117.   {
  118.     var objGroup = obj
  119.     if ( obj != null && typeof(obj) != 'undefined' )
  120.     {
  121.       while( typeof(objGroup) != 'undefined' && objGroup != null )
  122.       {
  123.         if( typeof(objGroup.selectable) != 'undefined' && objGroup.selectable == "true" &&
  124.             typeof(objGroup.id) != 'undefined' && objGroup.id != "" )
  125.         {
  126.             return objGroup;
  127.         };
  128.              
  129.         objGroup = objGroup.parentElement;
  130.       };
  131.     }
  132.     return objGroup
  133.   };
  134.  
  135.   function onClickPage()
  136.   {
  137.     clearBoxHighlighting();
  138.     clearSubBoxHighlighting();
  139.     strActiveBoxId = "";
  140.     strActiveSubBoxId = "";
  141.  
  142.     var obj = parent.hcNavigate;
  143.     if ( typeof( obj ) == "object" && typeof( obj.clearPage ) != "undefined" )
  144.       obj.clearPage()      
  145.   }
  146.  
  147.   function onMouseWheeling()
  148.   {
  149.     //mouse wheel works only for IE 6
  150.     var obj = parent.hcToolbar
  151.     if( typeof(obj) == "object" && typeof( obj.onChartMouseWheeling ) != "undefined" )
  152.     {
  153.       obj.onChartMouseWheeling(event)      
  154.     }
  155.   }
  156.  
  157.   function onChartPageInit()      
  158.   {
  159.     if (getIEVersion() < 5.0)
  160.     {
  161.       document.body.innerText = "";
  162.       alert("You have an old version of Internet Explorer" +  //Loc
  163.         " - Update it please at least to Version 5.0.\nTo have a full functionality " +
  164.         "you should install Version 5.5, 6.0 or higher.");
  165.     }
  166.     else
  167.     {
  168.       var oGroup
  169.       var strHash = window.location.hash
  170.       if ( strHash != "" ) 
  171.       { 
  172.         var strId = strHash.substring( 1, strHash.length )
  173.         oGroup = getGroupBoxById(strId)
  174.       }
  175.       else
  176.       {
  177.         oGroup = findFirstGroupBox()
  178.       }
  179.  
  180.       if ( typeof(oGroup) == "object" && oGroup != null)
  181.       {
  182.         if ( typeof(parent.hcNavigate) == "object" && typeof (parent.hcNavigate.fillPage) != "undefined" )
  183.         {
  184.           parent.hcNavigate.fillPage(oGroup)
  185.         }
  186.         
  187.         clearBoxHighlighting()
  188.         strActiveBoxId = oGroup.id
  189.     
  190.         if ( strHash != "" ) 
  191.         {
  192.           highlightSelectedBox()
  193.           navigateDeffered()
  194.         }
  195.       }
  196.       else
  197.       {
  198.         strActiveBoxId = "";
  199.         strActiveSubBoxId = "";
  200.       }
  201.  
  202.       initOverviewWindow()
  203.       updateOverviewWindow()
  204.  
  205.       var obj = parent.hcToolbar
  206.       if( typeof(obj) == "object" && typeof( obj.setZoom ) != "undefined" )
  207.       {
  208.         obj.ZoomToFitInit()
  209.       }
  210.     }
  211.   }
  212.  
  213.   function onChartPageScrolled()
  214.   {
  215.     updateOverviewWindow()
  216.   }
  217.   
  218.   function getProfilesObj()
  219.   {
  220.     if( parent.hcPersons == null )
  221.       return;
  222.     var spanObjs = parent.hcPersons.document.body.children.tags("span")
  223.     if(spanObjs.length == 0)
  224.       return null
  225.     var idxObj = null
  226.     for(var j = 0; j < spanObjs.length; ++j)
  227.     {
  228.       if(spanObjs(j).id == "Index")
  229.       {
  230.         idxObj = spanObjs(j)
  231.         break
  232.       }            
  233.     }
  234.     spanObjs = idxObj.children.tags("span");
  235.     if(spanObjs.length == 0)
  236.       return;
  237.     var personsObj = null;
  238.     for(var j = 0; j < spanObjs.length; ++j)
  239.     {
  240.       if(spanObjs(j).id == "ProfileInfo")
  241.       {
  242.         personsObj = spanObjs(j) ;
  243.         break;
  244.       }
  245.     }        
  246.     return personsObj;
  247.   }    
  248.  
  249.   function getDirictoresObj()
  250.   {
  251.     if( parent.hcPersons == null )
  252.       return;
  253.     var spanObjs = parent.hcPersons.document.body.children.tags("span")
  254.     if(spanObjs.length == 0)
  255.       return null
  256.     var idxObj = null
  257.     for(var j = 0; j < spanObjs.length; ++j)
  258.     {
  259.       if(spanObjs(j).id == "Index")
  260.       {
  261.         idxObj = spanObjs(j)
  262.         break
  263.       }            
  264.     }
  265.     spanObjs = idxObj.children.tags("span");
  266.     if(spanObjs.length == 0)
  267.       return;
  268.     var personsObj = null;
  269.     for(var j = 0; j < spanObjs.length; ++j)
  270.     {
  271.       if(spanObjs(j).id == "DirInfo")
  272.       {
  273.         personsObj = spanObjs(j) ;
  274.         break;
  275.       }
  276.     }        
  277.     return personsObj;
  278.   }    
  279.  
  280.   function updateOverviewWindow()
  281.   {
  282.     var obj = parent.hcToolbar;
  283.     if( typeof(obj) == "object" && typeof( obj.updateOverviewWindow ) != "undefined" )
  284.     {
  285.       obj.updateOverviewWindow();
  286.     }
  287.   }
  288.   
  289.   function initOverviewWindow()
  290.   {
  291.     var obj = parent.hcToolbar;
  292.     if( typeof(obj) == "object" && typeof( obj.initOverviewWindow ) != "undefined" )
  293.     {
  294.       obj.initOverviewWindow();
  295.     }
  296.   }
  297.  
  298.   function findFirstGroupBox()
  299.   {
  300.     var groupObjs = document.getElementsByTagName("group");
  301.     if (groupObjs.length > 0)
  302.       return groupObjs(1);
  303.     
  304.     return null;
  305.   }
  306.   
  307.   function FillPanel( p_oGroupObj )
  308.   {
  309.     var obj = parent.hcNavigate;
  310.     if ( typeof( obj ) == "object" && typeof( obj.fillPage ) != "undefined" )
  311.       obj.fillPage(p_oGroupObj);
  312.   };
  313.  
  314.   function onSelectChartBox(groupObj)
  315.   {
  316.     clearBoxHighlighting();
  317.     if(groupObj.id == "PageGroup")
  318.     {
  319.       strActiveBoxId = "";
  320.       return;
  321.     };
  322.     
  323.     if( groupObj.id != strActiveBoxId )
  324.       clearSubBoxHighlighting();
  325.     
  326.     strActiveBoxId = groupObj.id;
  327.     highlightSelectedBox();
  328.  
  329.     FillPanel( groupObj );
  330.   }
  331.   
  332.   function onSelectSubBox( p_oGroupObj )
  333.   {
  334.     clearSubBoxHighlighting();
  335.     strActiveSubBoxId = p_oGroupObj.id;
  336.     highlightSelectedSubBox();
  337.     
  338.     FillPanel( p_oGroupObj );
  339.   };
  340.   
  341.   function getSubBoxById( strId )
  342.   {
  343.     if ( strId == "" ) return;
  344.  
  345.     var groupObjs = document.getElementsByTagName("rect")
  346.     for (i = 0; i < groupObjs.length; i++)
  347.     {
  348.       if (groupObjs(i).id == strId)
  349.       {
  350.         return groupObjs(i)
  351.       }
  352.     }
  353.     
  354.     return null;
  355.   };
  356.  
  357.   function getGroupBoxById(strId)
  358.   {
  359.     if ( strId == "" ) return;
  360.     var groupObjs = document.getElementsByTagName("group")
  361.     for (i = 0; i < groupObjs.length; i++)
  362.     {
  363.       if (groupObjs(i).id == strId)
  364.       {
  365.         return groupObjs(i)
  366.       }
  367.     }
  368.     
  369.     groupObjs = document.getElementsByTagName("rect")
  370.     for (i = 0; i < groupObjs.length; i++)
  371.     {
  372.       if (groupObjs(i).id == strId)
  373.       {
  374.         return groupObjs(i)
  375.       }
  376.     }
  377.     
  378.     return null;
  379.   }
  380.    
  381.   function navigateBox(strId)
  382.   {
  383.     var obj = getGroupBoxById(strId)
  384.     if (typeof(obj) == "object")
  385.     {
  386.       onSelectChartBox(obj)
  387.     }
  388.     
  389.     var toolBar = parent.hcToolbar;
  390.     if( toolBar == null ) return;
  391.     toolBar.tryCenterPage();
  392.   }
  393.   
  394.   var timerNavigateId = -1
  395.   function navigateDeffered()
  396.   {        
  397.     if(timerNavigateId == -1)
  398.     {
  399.       timerNavigateId = window.setInterval("onTimerNavigateFunc()", 150)     
  400.     }
  401.   }
  402.  
  403.   function onTimerNavigateFunc()
  404.   {
  405.     window.clearInterval(timerNavigateId);
  406.     timerNavigateId = -1;
  407.     navigateBox(strActiveBoxId);
  408.   }    
  409.   
  410.   function onNavigatePageInit()
  411.   {
  412.     var obj = getGroupBoxById(strActiveBoxId);
  413.     FillPanel(obj);
  414.   }
  415.  
  416.   function highlightSelectedBox()
  417.   {
  418.     var obj = getGroupBoxById(strActiveBoxId);
  419.     setOpacityForGroupBox(obj, 0.4);
  420.   }
  421.   
  422.   function highlightSelectedSubBox()
  423.   {
  424.     if( strActiveSubBoxId )
  425.     {
  426.       var obj = getSubBoxById(strActiveSubBoxId);
  427.       obj.style.backgroundColor = "#AFFFAF";
  428.     };
  429.   };
  430.  
  431.   function clearBoxHighlighting()
  432.   {
  433.     if (strActiveBoxId != "")
  434.     {
  435.       var obj = getGroupBoxById(strActiveBoxId)
  436.       setOpacityForGroupBox(obj, 1.0)
  437.     }
  438.     
  439.     clearSubBoxHighlighting();
  440.   }
  441.   
  442.   function clearSubBoxHighlighting()
  443.   {
  444.     if( strActiveSubBoxId != "" )
  445.     {
  446.       var obj = getSubBoxById(strActiveSubBoxId);
  447.       obj.style.backgroundColor = "transparent";
  448.     };
  449.   };
  450.  
  451.   function setOpacityForGroupBox(obj, val)
  452.   {  
  453.     if (typeof(obj) == "object")
  454.     {
  455.      setOpacityForObjecs(obj, "rect", val);
  456.      setOpacityForObjecs(obj, "roundrect", val);
  457.      setOpacityForObjecs(obj, "shape", val);
  458.      setOpacityForObjecs(obj, "oval", val);
  459.     }
  460.   }
  461.  
  462.   function setOpacityForObjecs(obj, name, val)
  463.   {
  464.     var rectObjs = obj.getElementsByTagName(name);
  465.     var fillObjs;
  466.     var objFill;
  467.     var strName;
  468.    
  469.     for (i = 0; i < rectObjs.length; i++)
  470.     {
  471.       fillObjs = rectObjs(i).getElementsByTagName("fill");
  472.       if (fillObjs.length > 0)
  473.       {
  474.         objFill = fillObjs(0);
  475.         strName = rectObjs(i).getAttribute("name");
  476.         
  477.         if ( strName == "SelectTranspRect" || strName == "SelectRect" && getIEVersion() < 6.0 )
  478.           objFill.setAttribute("on", val != 1.0);
  479.  
  480.         var objId = rectObjs(i).id;
  481.         var bFound = false;
  482.         
  483.         if (objId != null)
  484.         {
  485.           var nLen = objId.length;
  486.           var strToSearch = "_HitTestRect";
  487.           if (nLen > strToSearch.length )
  488.           {
  489.             var s = objId.substr(nLen - strToSearch.length, nLen - 1);
  490.             if (s == strToSearch)
  491.               bFound = true;
  492.           }
  493.         }
  494.         if (!bFound)
  495.           objFill.setAttribute("opacity", val);
  496.       }
  497.     }
  498.   }
  499.  
  500.   function onChartPageResized()
  501.   {
  502.     updateOverviewWindow()
  503.   }
  504.  
  505.   function onWndResized()
  506.   {
  507.     var toolBar = parent.hcToolbar;
  508.     if( toolBar == null ) return;
  509.  
  510.     if (toolBar.bFitToWindow)
  511.         parent.hcMain.scrolling='no';
  512.     
  513.     if( typeof(toolBar) == "object" && typeof( toolBar.tryCenterPage ) != "undefined" && 
  514.         typeof( toolBar.ZoomToFit ) != "undefined" )
  515.     {
  516.       if (parent.bAutoFitToWindow)
  517.         toolBar.ZoomToFit();
  518.       else
  519.         toolBar.tryCenterPage();
  520.     }
  521.  
  522.     updateOverviewWindow();
  523.   }
  524.   
  525.   function onBeforePrint()
  526.   {
  527.     if( parent != self )
  528.       return;
  529.       
  530.     CorrectObj( document.body, 1270 / document.body.scrollWidth );    
  531.  
  532.     var arrows = document.all.SubChartArrow;
  533.     if( arrows == null ) return;
  534.     
  535.     for( var i = 0; i < arrows.length; ++i )
  536.       arrows[i].style.visibility = "hidden";
  537.   }
  538.   
  539.   function CorrectObj( p_oObj, p_iK )
  540.   {
  541.     if( p_oObj.tagName == "line" )
  542.     {
  543.       p_oObj.from.x *= p_iK;
  544.       p_oObj.from.y *= p_iK;
  545.       p_oObj.to.x *= p_iK;
  546.       p_oObj.to.y *= p_iK;
  547.     }
  548.     else
  549.     {
  550.       if( p_oObj.style )
  551.       {
  552.         p_oObj.style.pixelLeft *= p_iK;
  553.         p_oObj.style.pixelTop  *= p_iK;
  554.         p_oObj.style.pixelWidth *= p_iK;
  555.         p_oObj.style.pixelHeight *= p_iK;
  556.         
  557.         if( p_oObj.style.fontWeight )
  558.           p_oObj.style.fontSize = parseInt(p_oObj.currentStyle.fontSize)*p_iK;
  559.       }
  560.  
  561.       if( p_oObj.coordsize && p_oObj.tagName == "group")
  562.       {
  563.         p_oObj.coordsize.x *= p_iK;
  564.         p_oObj.coordsize.y *= p_iK;
  565.       }
  566.     }
  567.    
  568.     for( var i = 0; i < p_oObj.childNodes.length; ++i )
  569.       CorrectObj( p_oObj.childNodes[i], p_iK )
  570.   }
  571.   
  572.   function onPageInit()        //SPb AGal 15.10.2004
  573.   { 
  574.     if( parent == self )
  575.     {
  576.       window.print();
  577.       window.close();
  578.       
  579.       return;
  580.     }
  581.     
  582.     var toolBar = parent.hcToolbar
  583.  
  584.     if (toolBar.visibility == "hidden")
  585.     {
  586.       toolBar.bFitToWindow = true;
  587.       toolBar.SetAutoFitFlag();
  588.     }
  589.  
  590.     toolBar.bZoomInitReady = toolBar.bFitToWindow ? false : true;
  591.  
  592.     onChartPageInit();
  593.   }             
  594.   
  595.   function getPersonsObj()
  596.   {
  597.     if( parent.hcPersons == null ) return null;
  598.     
  599.     var spanObjs = parent.hcPersons.document.body.children.tags("span")
  600.     if(spanObjs.length == 0)
  601.       return null
  602.     var idxObj = null
  603.     for(var j = 0; j < spanObjs.length; ++j)
  604.     {
  605.       if(spanObjs(j).id == "Index")
  606.       {
  607.         idxObj = spanObjs(j)
  608.         break
  609.       }            
  610.     }
  611.     spanObjs = idxObj.children.tags("span")
  612.     if(spanObjs.length == 0)
  613.       return          
  614.     var personsObj = null
  615.     for(var j = 0; j < spanObjs.length; ++j)
  616.     {
  617.       if(spanObjs(j).id == "Persons")
  618.       {
  619.         personsObj = spanObjs(j) 
  620.         break
  621.       }            
  622.     }        
  623.     return personsObj
  624.   }    
  625.   
  626.   function getFieldsObj()
  627.   {
  628.     var spanObjs = parent.hcPersons.document.body.children.tags("span")
  629.     if(spanObjs.length == 0)
  630.       return null
  631.     var idxObj = null
  632.     for(var j = 0; j < spanObjs.length; ++j)
  633.     {
  634.       if(spanObjs(j).id == "Index")
  635.       {
  636.         idxObj = spanObjs(j)
  637.         break
  638.       }            
  639.     }
  640.     if(idxObj == null) return null
  641.     spanObjs = idxObj.children.tags("span")
  642.     if(spanObjs.length == 0)
  643.       return;          
  644.     var fieldsObj = null
  645.     for(var j = 0; j < spanObjs.length; ++j)
  646.     {
  647.       if(spanObjs(j).id == "Fields")
  648.       {
  649.         fieldsObj = spanObjs(j)
  650.         break
  651.       }            
  652.     }        
  653.     return fieldsObj
  654.   }    
  655.  
  656.   
  657.   function findPersonNode(id, parent)
  658.   {
  659.     if(parent == null)
  660.     {
  661.       parent = getPersonsObj()
  662.       if(parent == null) return null
  663.     }
  664.     var spanObjs = parent.children.tags("span")
  665.     if(spanObjs.length == 0)
  666.       return null
  667.  
  668.     for(var j = 0; j < spanObjs.length; ++j)
  669.     {
  670.       if(spanObjs(j).id == id)
  671.       return spanObjs(j)
  672.     }    
  673.  
  674.     for(var j = 0; j < spanObjs.length; ++j)
  675.     {
  676.       var spanObj = findPersonNode(id,spanObjs(j))
  677.       if(spanObj != null) return spanObj
  678.     }    
  679.     return null
  680.   }
  681.  
  682.   function HS_PrepareHtml(  )
  683.   {
  684.     if( !parent.hcPersons ) return;
  685.     p_iID = event.srcElement.GroupId;
  686.     p_StrID = event.srcElement.strId;
  687.     
  688.     var iFrame = window.frames.hcHTMLProfile;
  689.     var html = iFrame.document.body.innerHTML;
  690.     var oData = parent.hcPersons.document.all[ p_iID ];
  691.     var FieldDefs   = parent.hcMain.getFieldsObj();
  692.     if( FieldDefs == null ) return;
  693.    
  694.     var objProf = document.all[ p_StrID ];
  695.     if (objProf == null) 
  696.       return;
  697.  
  698.     for( var i = 0; i < FieldDefs.children.length; ++i )
  699.     {
  700.       var templateName = "\\[@" + FieldDefs.children[i].name + "@\\]";
  701.       for( var fi = 0; fi < oData.children.length; ++fi )
  702.         if( oData.children[fi].tagName == "PARAM" && oData.children[fi].id == FieldDefs.children[i].id )
  703.         {
  704.           groupValue = oData.children[fi];
  705.           break;
  706.         };
  707.  
  708.       html = html.replace( new RegExp( templateName, "g"), groupValue.name );
  709.     }
  710.  
  711.     objProf.innerHTML = html;
  712.     
  713.     var oImagesCollection = objProf.getElementsByTagName("IMG");
  714.     if( typeof(oImagesCollection) == 'undefined' || oImagesCollection == null )
  715.       return;
  716.     
  717.     for( var i = 0; i < oImagesCollection.length; ++i )
  718.       oImagesCollection[i].onerror = HS_ImageHider;
  719.   }
  720.  
  721.   function HS_ImageHider()
  722.   {
  723.     event.srcElement.style.visibility = "hidden";
  724.   };
  725.  
  726.   var cellArray = null
  727.   function ShowHSProfile(profileId, bShow)
  728.   {
  729.     var strId = "prof"+profileId;
  730.     var objProf = document.all(strId);
  731.     if (objProf == null) 
  732.       return;
  733.       
  734.     var objGroup = GetGroupForObject(event.srcElement)
  735.       
  736.     if( objProf.profileType == "html")
  737.     {
  738.       if( bShow )
  739.       {
  740.         var iFrame = window.frames.hcHTMLProfile;
  741.         if( iFrame == null )
  742.         {
  743.           var frm = document.createElement( "<iframe onload=\"HS_PrepareHtml()\" id=\"hcHTMLProfile\" name=\"hcHTMLProfile\" width=0 scrolling='no' border='0' frameborder='0' noresize topmargin='0' leftmargin='0' marginheight='0' marginwidth='0'></iframe>")
  744.           document.body.appendChild( frm );
  745.           frm.src = objProf.profileURL;
  746.           iFrame = window.frames.hcHTMLProfile;
  747.         }
  748.         else
  749.         {
  750.           iFrame.location.href = objProf.profileURL;
  751.         }
  752.         
  753.         iFrame.frameElement.GroupId = objGroup.id;
  754.         iFrame.frameElement.strId   = strId;
  755.       }
  756.  
  757.       var x = window.event.clientX + document.body.scrollLeft;
  758.       var y = window.event.clientY + document.body.scrollTop;
  759.       objProf.style.left = x;
  760.       objProf.style.top = y;
  761.       var strShowCmd = bShow ? "visible" : "hidden";
  762.       objProf.style.visibility = strShowCmd;
  763.       objProf.style.backgroundColor = "white";
  764.       
  765.       return;
  766.     }
  767.     
  768.     var objPerson = findPersonNode(objGroup.id, null)
  769.     if (objPerson == null)
  770.       return;
  771.        
  772.     if (bShow)
  773.     {
  774.       var imgs = new Array()
  775.       var imgSrcs  = new Array()
  776.                   
  777.       cellArray = new Array()
  778.       var paramObjs = objPerson.getElementsByTagName("param")
  779.       var rows =  objProf.children[0].rows;
  780.       var k = 0, n = 0;
  781.       
  782.       var cellright = null 
  783.       
  784.       for (i = 0; i < rows.length; ++i)
  785.       {
  786.         var cells = rows[i].cells;
  787.         var cell = cells[1];
  788.         var merged = false;
  789.         if (cell == null)
  790.         {
  791.           merged = true;
  792.           cell = cells[0];
  793.         }
  794.         else  if (cellright == null) 
  795.           cellright = cell
  796.         for (j = 0; j < paramObjs.length; ++j)
  797.         {
  798.           var p = paramObjs(j)
  799.           if (cell.id != null &&  cell.id == p.id)
  800.           {
  801.             if (p.img != null )
  802.             {
  803.               var img = cell.getElementsByTagName("img")[0]
  804.               if (img != null && p.name && p.name != "")
  805.               {
  806.                 imgs[n] = img
  807.                 if (merged)
  808.                   img.merged = true
  809.                 imgSrcs[n++] = p.name
  810.                 img.style.visibility = "";
  811.               }
  812.               else if( img )
  813.               {
  814.                 img.style.visibility = "hidden";
  815.               }
  816.             }
  817.             else
  818.             {
  819.               if (p.name == "")
  820.               {
  821.                 cell.innerHTML = " "
  822.                 if (cell.style.textDecoration != "none")              
  823.                 {
  824.                   cellArray[k++] = cell;
  825.                   cellArray[k++] = cell.style.textDecoration;
  826.                   cell.style.textDecoration = "none"
  827.                 }
  828.               }
  829.               else
  830.                 cell.innerText = p.name
  831.             }
  832.             break;
  833.           }
  834.         }
  835.       }                 
  836.       
  837.       var w1 = objProf.children[0].pixelWidth
  838.       var w2 = cellright != null ? cellright.pixelWidth : null
  839.       
  840.       for (i = 0; i < imgs.length; ++i)
  841.       {
  842.         var img = imgs[i]
  843.         img.src = imgSrcs[i]
  844.         if (img.merged != null)
  845.           img.width = w1 - 2;
  846.         else if (w2 != null)
  847.           img.width = w2 - 2;
  848.       }
  849.     }
  850.     var x = window.event.clientX + document.body.scrollLeft 
  851.     var y = window.event.clientY + document.body.scrollTop
  852.     objProf.style.left = x
  853.     objProf.style.top = y    
  854.     var strShowCmd = bShow ? "visible" : "hidden"
  855.     objProf.style.visibility = strShowCmd;    
  856.     
  857.     if (!bShow)
  858.     {
  859.       for (i = 0; i < cellArray.length; i +=2)
  860.       {
  861.         cellArray[i].style.textDecoration = cellArray[i+1]
  862.       }
  863.     }
  864.   }
  865.